Computer systems are generally formed from multiple semiconductor and other components that are coupled together. For example, typical systems include a central processing unit (CPU) in addition to possibly one or more other processors that can be coupled to a motherboard. These processors in turn can be coupled to other components such as memory controllers, input/output hubs, other semiconductor devices, and other system components such as a mass storage, e.g., by way of interconnects configured on the motherboard or by other such connections.
To communicate between different components, a communication protocol can be used. Many such protocols provide for different layers to handle communication tasks. In some protocols, a physical layer is the layer that actually transmits messages along an interconnect and receives and processes messages from a corresponding physical layer of one or more other devices. In turn, this physical layer can be coupled to a link layer that performs various functions such as error detection and correction. In turn, the link layer can be coupled to a protocol layer which receives message packets from the link layer and further processes them to thus route them to their destination locations within a semiconductor component. Oftentimes, the link layer will include a large buffer to temporarily store all incoming messages. However, this buffer is responsible for a great increase in die consumption, as well as raising the complexity of handling incoming messages.